package com.ssy.lingxi.marketing.utils;

import java.math.BigDecimal;

/**
 * 数值工具类
 * 方法与之相似 com.ssy.lingxi.member.merchant.utils.NumberUtil
 * 考虑到member模块下的NumberUtil已经引用多处, 迁移到common模块会对多处文件做修改,
 * 又因二开项目进度紧急, 避免对合并有影响,且可能增加其合并难度,故拷贝一个,
 * 待重构优化代码, 的可将该工具类引用全部指向common的NumberUtil[前提是member模块的NumberUtil移至common模块]
 * @author yzc
 * @version 2.0.0
 * @date 2021/10/30
 */
public class NumberUtil {

    /**
     * 判断Integer是否不为Null且不等于0
     * @param i Integer参数
     * @return 是-true，否-false
     */
    public static boolean notNullOrZero(Integer i) {
        return i != null && !i.equals(0);
    }

    /**
     * 判断Long是否为不为Null且不等于0
     * @param l Long参数
     * @return 是-true，否-false
     */
    public static boolean notNullOrZero(Long l) {
        return l != null && !l.equals(0L);
    }

    /**
     * 判断Integer是否为Null或等于0
     * @param i Integer参数
     * @return 是-true，否-false
     */
    public static boolean isNullOrZero(Integer i) {
        return i == null || i.equals(0);
    }
    /**
     * 判断Long是否为Null或等于0
     * @param i Integer参数
     * @return 是-true，否-false
     */
    public static boolean isNullOrZero(Long i) {
        return i == null || i.equals(0);
    }
    /**
     * 如果为空，置为零
     * @param i Integer参数
     * @return 是-true，否-false
     */
    public static Integer setZeroOfNull(Integer i) {
        return i == null?0:i;
    }

    /**
     * 如果为空，置为零
     * @param i Integer参数
     * @return 是-true，否-false
     */
    public static Long setZeroOfNull(Long i) {
        return i == null?0:i;
    }

    /**
     * 如果为空，置为零
     * @param i Integer参数
     * @return 是-true，否-false
     */
    public static BigDecimal setZeroOfNull(BigDecimal i) {
        return i == null?BigDecimal.ZERO:i;
    }
    /**
     * 获得百分比（乘以一百）
     * @param i BigDecimal参数 例：0.013
     * @return  1.3
     */
    public static BigDecimal multiplyHundred(BigDecimal i) {
        return BigDecimal.valueOf(100).multiply(setZeroOfNull(i));
    }

    public static Integer strToInteger(String str) {
        return strToBigDecimal(str).intValue();
    }

    public static BigDecimal strToBigDecimal(String str) {
        if(str==null||"".equals(str)){
            return BigDecimal.ZERO;
        }
        try{
            return new BigDecimal(str);
        }catch (Exception e){
            return BigDecimal.ZERO;
        }
    }
}
